//
//  ImageViewPlayer.m
//  13.图片轮播器的封装
//
//  Created by 苹果 on 16/1/25.
//  Copyright © 2016年 xiaomage. All rights reserved.
//

#import "ImageViewPlayer.h"

@interface ImageViewPlayer ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (weak, nonatomic) IBOutlet UIPageControl *pageControl;
@property (weak, nonatomic) IBOutlet UILabel *countLabel;
@property (nonatomic, weak) NSTimer *timer;
@property (assign, nonatomic) NSInteger imgCount;
@end

@implementation ImageViewPlayer

+ (instancetype)imageViewPlayer
{
    return [[[NSBundle mainBundle]loadNibNamed:@"ImageViewPlayer" owner:nil options:nil] lastObject];
}

- (void)hidePageControl {
    self.pageControl.hidden = YES;
}

- (void)hideNumberCount {
    self.countLabel.hidden = YES;
}

- (void)awakeFromNib {
    [super awakeFromNib];
    // 分页
    self.scrollView.backgroundColor = [UIColor clearColor];
    // 只要设置成yes  那么就是自动分页
    self.scrollView.pagingEnabled = YES;
    // 设置代理
    self.scrollView.delegate = self;
    
    // 使用kvc 更改pageControl中的私有属性
    // 私有属性的key 分别是_currentPageImage / _pageImage
    // _currentPageImage 是当前的图片
    // _pageImage 是其他图片
    [self.pageControl setValue:[UIImage imageNamed:@"currentPageImage"] forKey:@"_currentPageImage"];
    [self.pageControl setValue:[UIImage imageNamed:@"pageImage"] forKey:@"_pageImage"];
    
    // 创建一个定时器
    // 定时器 定时在2秒后调用控制器的nextPage方法 带着userInfo中参数过去并且重复播放
    self.timer = [NSTimer scheduledTimerWithTimeInterval:2.5f target:self selector:@selector(nextPage:) userInfo:nil repeats:YES];
}


#pragma mark - scrollView 的代理方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    // 下一页
    int page = (scrollView.contentOffset.x / scrollView.frame.size.width + 0.5);
    self.countLabel.text = [NSString stringWithFormat:@"%li/%li", (long)page + 1, (long)self.imgCount];
    self.pageControl.currentPage = page;
}
// 使用一个方法播放下一张图片
- (void)nextPage:(NSTimer *)timer
{
    // 获取下一页
    NSInteger page = self.pageControl.currentPage + 1;
    
    // 问题  多滚了一个宽度
    // 如果是第五个 那么就是多滚出了一个宽度, 所以从0开始
    if (page == self.views.count) {
        page = 0;
    }
    [UIView animateWithDuration:0.5 animations:^{
        self.scrollView.contentOffset = CGPointMake(page * self.scrollView.frame.size.width, 0);
    }];
}
// 停止自动播放
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    // 停止定时器
    [self.timer invalidate];
    // 停止了一次之后  定时器就不能在使用了
}

// 在停止拖拽的时候开始定时器
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    // 因为定时器是一次性了,  那么再次使用的时候需要重新创建
    self.timer = [NSTimer scheduledTimerWithTimeInterval:2.5f target:self selector:@selector(nextPage:) userInfo:@"333" repeats:YES];
}


- (void)setViews:(NSArray *)views
{
    _views = views;
    
    self.imgCount = views.count;
    
    for (int i = 0 ; i < views.count; i ++) {
        UIView *view = (UIView *)views[i];
        view.frame = CGRectMake(self.width * i, 0, self.width, self.height);
        view.contentMode = UIViewContentModeScaleToFill;
        // 添加到ScrollView上
        [self.scrollView addSubview:view];
    }
    self.countLabel.text = [NSString stringWithFormat:@"1/%li", (long)self.imgCount];
    // contentSize
    // 设置为0 就是垂直方向不能滚动
    self.scrollView.contentSize = CGSizeMake(self.width * views.count, 0);
    self.pageControl.numberOfPages = views.count;
}





@end
